Currently in RAID configurations hard disk bad block management is provided through its special reserved area of the hard disk called GLIST. In a hard drive, if a write operation fails due to a medium error such as a bad block, the hard disk allocates an unused block from GLIST and the bad block location is remapped to the newly allocated location in GLIST. Once the unused GLIST blocks are exhausted, the hard disk cannot internally fix faulty blocks and has to pass the error to the RAID layer. When the RAID layer receives the error, it then fails the disk. If the RAID layer cannot recover using other hard disks of the array (depending on the RAID level used), it will fail the entire array.
With respect to a read operation failure, when such an error is received by the RAID layer from a hard disk, the RAID layer reads from other blocks in a same stripe to try and compute the failed block data. During this data computation, if the RAID layer encounters further read operation failures and there is no bad block management module in the RAID layer, then the RAID layer will fail the entire array.
There are many other scenarios where a RAID layer will fail an entire array, for example:                1) During a degraded state: If an entire hard disk is already failed, if another read error is received, the RAID layer may mark the whole array as failed.        2) During a rebuilding state: While the RAID layer is rebuilding the array, it computes missing block data from the existing blocks in the same stripe. If it encounters a read error from the existing blocks, it may mark the whole array as failed.        3) During a dirty degraded state: Dirty degraded is a failure state that happens when there was an unclean shutdown while one or more stripes were open.        4) During an initialization state: During initialization, if there are any read errors, the RAID layer may mark the whole array as failed.        